package version1;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * 版本1--封装【拓展】
 * Mysql工具类
 * 1.数据库：地址、用户名、密码  私有属性--静态化
 * 2.静态方法【本类直接调用】getParam(String 外置文件路径)
 * 目的：使用方法调用外部文件 db_mysql.properties
 * db_mysql.properties 对应 Java properties类：读取键值对
 * 3.通过封装概念--连接成功数据【通用一个类链接Mysql和Oracle】
 */
public class Mysql {
    //1.任何数据库具备：地址、用户名、密码--私有静态属性
    private static String url;
    private static String username;
    private static String password;
    //2.静态方法：getParam(String 路径)---链接数据库--读取信息
    //2.1配置文件：键值对出现，保存数据库对应的基本信息  XXX.properties
    //2.2 Properties类--读取xxx.properties配置文件
    //参考mysql封装，写Oracle封装【作业2】

    public static void getParam(String fileName) throws IOException {
        Properties p=new Properties();
        //2.3外置文件读取--借助IO搬运数据--InputName
        //Mysql.class 表示当前Mysql类的Class对象
        //getClassLoader() 获取当前类的加载器【加载器负责读取配置文件信息】
        //getResourceAsStream(文件)获取当前加载中键值对信息
        //理解：图书馆--区域Mysql相关书籍---图书管理员--拿明确的书籍
        InputStream fis=
                Mysql.class.getClassLoader().getResourceAsStream(fileName);
        p.load(fis);
        //2.4读取数据库基本信息【url、用户、密码】赋值给当前对象【url、密码、用户】
        //Properties类--提供方法 getProperty() 读取db_mysql.properties中键
        url=p.getProperty("url");
        username=p.getProperty("username");
        password=p.getProperty("password");
        System.out.println("测试链接成功："+url+username+password);
    }
    public static void main(String[] args) throws IOException, SQLException {
        Mysql.getParam("db_mysql.properties");


        //练习：链接成功Mysql--book表--增加一条记录操作
        //1.创建链接---Connection 代表Java执行数据
        Connection con=DriverManager.getConnection(url,username,password);
        //2.执行sql--Statement  代表Java执行数据 sql
        Statement st=con.createStatement();
        //3.【CRUD操作：增删改 executeUpdate()   查 executeQuery】
        String sql="insert into book values(6,'余华','活着',79,'2010年',80,'否')";
        //作业3--删改查
        int rows=st.executeUpdate(sql);//执行增删改，返回值int类型
        System.out.println("添加成功了："+rows+"一条记录");
        //作业3 - 删除
//        String Sql1 = "delete from book where id=6";
//        int Rows1 = st.executeUpdate(Sql1);
//        System.out.println("删除成功：" + Rows1 + " 条记录");
        //作业3 - 修改
//        String Sql2 = "update book set price=85 where id=6";
//        int Rows2 = st.executeUpdate(Sql2);
//        System.out.println("修改成功：" + Rows2 + " 条记录");
        //  作业3 - 查询
//        String Sql3 = "select * from book";
//        ResultSet rs = st.executeQuery(Sql3);
//        while (rs.next()) {
//            System.out.println("ID: " + rs.getInt("id")
//                    + "，书名: " + rs.getString("name")
//                    + "，作者: " + rs.getString("author"));
//        }
//        rs.close();

        //4.关闭连接--Statement--Connection
        st.close(); con.close();
    }
}

